package com.dhecp.project.system.service;

import java.util.List;
import java.util.Map;

import com.dhecp.core.layui.TreeSelectDataModel;
import com.dhecp.project.base.domain.BaseInfo;
import org.springframework.web.bind.annotation.RequestParam;

import com.dhecp.common.core.domain.AjaxResult;
import com.dhecp.core.layui.TreeDataModel;
import com.dhecp.project.system.domain.SysDictionaryForModule;
import com.dhecp.project.system.domain.SysMenuInfo;

/**
 * 菜单 业务层
 * 
 * @author lwl
 */
public interface SysMenuInfoService
{
	
    /**
     * 通过guid查询单条记录
     * @param params
     * @return MenuInfo
     * @author DH-Xxj
     */
    SysMenuInfo queryMenuInfoByGuid(String guid);

    /**
     * 直接查询菜单表的数据
     * @param params
     * @return List
     * @author lwl
     * @throws Exception 
     */
    List<SysMenuInfo> queryMenuInfo(Map<String, Object> params) throws Exception;
    
    /**
     * 查询二级菜单数据
     * @param params
     * @return List
     * @author lwl
     * @throws Exception 
     */
    Map<String, Object> queryNextMenu(Map<String, Object> params) throws Exception;

    /**
     * 获取当前用户拥有的功能和菜单树
     * @param params
     * @return List
     * @author lwl
     */
    List<TreeDataModel> queryMenuInfoTree(Map<String, Object> params);

    /**
     * 获取当前用户拥有的功能和菜单树/PC new
     * @param params
     * @return List
     * @author lwl
     */
    List<TreeDataModel> queryMenuInfoTreePC(String moduleTable);
    
    List<BaseInfo> menusGroup(String moduleTable);
    
    /**
     * 获取当前用户拥有的功能和菜单树
     * @param params
     * @return List
     * @author lwl
     */
    List<TreeSelectDataModel> queryMenuInfoSelectTree(Map<String, Object> params);

    /**
     * 获取用户手机分组功能菜单
     * @param params
     * @return List - SysDictionaryForModule
     * @author DH-Xxj
     */
	List<SysDictionaryForModule> queryMobileMenuInfoList(Map<String, Object> params);
    
    /**
     * 新增保存菜单信息
     * @param  菜单信息
     */
    public AjaxResult insertMenu(Map<String, Object> params);
    
    /**
     * 修改保存菜单信息
     * @param menu 菜单信息
     */
    public AjaxResult updateMenu(@RequestParam Map<String, Object> params);
    
    /**
     * 删除保存菜单信息
     * @param  菜单信息
     */
    public AjaxResult deleteMenuByGuid(Map<String, Object> params);

    
}
